<template>
  <div>
    <!-- 把数据铺设到页面上,
    当用户点击买书按钮, 书籍数量增加1,
    并且要计算累计的和 -->
    <p>请选择你要购买的书籍</p>
    <ul>
      <!-- 把每本书显示出来 遍历 买书 点击事件-->
      <li>
        <span>水浒传</span>
        <button>买书</button>
      </li>
      <hr>
      <li v-for="(item,index) in arr" :key="index">
         <span> {{ item.name }}</span>
          <button @click="buyFn(index)">买书</button>
      </li>
    </ul>
    <table border="1" width="500" cellspacing="0">
      <tr>
        <th>序号</th>
        <th>书名</th>
        <th>单价</th>
        <th>数量</th>
        <th>合计</th>
      </tr>
      <tbody v-for="(item,index) in arr" :key="index">
        <td>{{ index + 1 }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.price }}</td>
        <td>{{ item.count }}</td>
        <td>{{ item.price * item.count }}</td>
      </tbody>
    </table>
    <p>总价格为: {{ TotalPrice }} </p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: [
        {
          name: "水浒传",
          price: 107,
          count: 0,
        },
        {
          name: "西游记",
          price: 192,
          count: 0,
        },
        {
          name: "三国演义",
          price: 219,
          count: 0,
        },
        {
          name: "红楼梦",
          price: 178,
          count: 0,
        },
      ],
    };
  },
  computed: {
    TotalPrice() {
      // 累加数组里各个对象的一个值
      // sum = [{x: 1}, {x: 2}, {x: 3}].reduce(
//     (previousValue, currentValue) => previousValue + currentValue.x
//     , initialValue)必须提供 initialValue
      return this.arr.reduce((sum,item) => {
        sum += item.price * item.count
        return sum
      },0)
    }
  },
  methods: {
     buyFn(index){
      this.arr[index].count++
    }
  }
};
</script>